/**
 * Created by 李柏霖
 * 2020/11/10 14:55
 */

package cn.lbl.face.dj;


import java.util.Arrays;

/*
给定一个数组 nums，编写一个函数将所有 0 移动到数组的末尾，同时保持非零元素的相对顺序不变。

示例:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]

说明:
必须在原数组上操作，不能拷贝额外的数组。
尽量减少操作次数。

 */
public class Main {
    public static void main(String[] args) {
        fun(new int[]{0,1,0,3,12});
    }

    public static void fun(int[] nums){
        //双指针法
        int left=0;
        int right=0;
        int temp=0;
        for (int i = left; i <nums.length ; i++) {
            if (nums[i] == 0) {
                left=i;
                for (int j = left; j <nums.length ; j++) {
                    if (nums[j] != 0) {
                        temp=nums[left];
                        nums[left]=nums[j];
                        nums[j]=temp;
                        break;
                    }
                }
            }
        }
        System.out.println(Arrays.toString(nums));
    }
}
